package com.gadgets.framework.start;

import org.springframework.context.ApplicationContext;

/**
 * @author UncleXiu
 * @version V1.0.0
 * @data 2022-02-10
 */
public abstract class AbsCacheInitLoaderProcess extends AbstractInitLoaderProcess{

    /**
     * 当前处理器缓存类型
     */
    private final String cacheType;

    public AbsCacheInitLoaderProcess(String cacheType) {
        // 缓存加载的执行顺序为第3位
        super(Integer.MIN_VALUE+100);
        this.cacheType = cacheType;
    }

    /**
     * 初始化执行方法
     *
     * @param context Spring上下文
     */
    @Override
    public void initLoad(ApplicationContext context) {
        initLoad();
    }

    /**
     * 实际初始化执行方法
     */
    public abstract void initLoad();

    /**
     * 缓存刷新时，判断执行器是否需要执行
     * @param targetType    刷新类型
     * @return              true-执行/false-不执行
     */
    public boolean judgeRefresh(String targetType){
        return targetType.equals(cacheType) || "0".equals(targetType);
    }

}
